package ynu;

import java.io.IOException;
import java.util.Scanner;


//get系列变量表示接收键盘输入的回车，无实际意义
public class Menu {
    Scanner sc = new Scanner(System.in);
    public void administrator() throws IOException {
        int label = 1;
        Administrator a0 = new Administrator();
        do{
            boolean flag0 = true;
            System.out.println("请输入你的id");
            String id = sc.nextLine();
            System.out.println("请输入你的密码");
            String password = sc.nextLine();
            if(a0.judgeIdentity(id,"D:\\java实训大作业\\管理员用户信息.txt")){
                System.out.println("没有此id的管理员,请重新输入");
                continue;
            }
            if(a0.login(id,password)){
                System.out.println("登录成功！");
                if(a0.judgePassword(id,password)){
                    System.out.println("请输入修改后的密码：");
                    String password1 = sc.nextLine();
                    a0.changePassword(password1,id);
                }
                do{
                    System.out.println("\n===== 管理员操作菜单 =====");
                    System.out.println("1.修改自身密码");
                    System.out.println("2.重置非管理员用户密码");
                    System.out.println("3.列出所有用户信息");
                    System.out.println("4.删除指定用户信息");
                    System.out.println("5.查询用户信息");
                    System.out.println("6.增加用户信息");
                    System.out.println("7.修改用户信息");
                    System.out.println("8.退出登录");
                    System.out.println("请选择功能：");
                    int flag = sc.nextInt();
                    String get = sc.nextLine();
                    switch (flag){
                        case 1:
                            String password1;
                            String changetime;
                            System.out.println("请输入修改时间");
                            changetime = sc.nextLine();
                            System.out.println("请输入修改后的密码");
                            password1 = sc.nextLine();
                            a0.changePassword(password1,id);
                            a0.changePasswordLog(changetime,a0.getName(id,"D:\\java实训大作业\\管理员用户信息.txt"));
                            break;
                        case 2:
                            boolean label1;
                            String resetid;
                            System.out.println("请输入要重置用户的类型：1.经理  2.前台（输入数字）");
                            int flag4 = sc.nextInt();
                            String get6 = sc.nextLine();
                            System.out.println("请输入重置时间");
                            String time = sc.nextLine();
                            switch (flag4){
                                case 1:
                                    System.out.println("请输入要重置用户的id");
                                    do{
                                        resetid = sc.nextLine();
                                        if(a0.judgeIdentity(resetid,"D:\\java实训大作业\\经理用户信息.txt")){
                                            System.out.println("经理用户中没有此id,请重新输入：");
                                            label1 = true;
                                        }else {
                                            label1 = false;
                                        }
                                    }while(label1);                                    a0.resetPassword(resetid);
                                    a0.resetPasswordLog(time,a0.getName(resetid,"D:\\java实训大作业\\经理用户信息.txt"),a0.getName(id,"D:\\java实训大作业\\管理员用户信息.txt"),"经理");
                                    break;
                                case 2:
                                    System.out.println("请输入要重置用户的id");
                                    do{
                                        resetid = sc.nextLine();
                                        if(a0.judgeIdentity(resetid,"D:\\java实训大作业\\前台用户信息.txt")){
                                            System.out.println("前台用户中没有此id,请重新输入：");
                                            label1 = true;
                                        }else {
                                            label1 = false;
                                        }
                                    }while(label1);
                                    a0.resetPassword(resetid);
                                    a0.resetPasswordLog(time,a0.getName(resetid,"D:\\java实训大作业\\前台用户信息.txt"),a0.getName(id,"D:\\java实训大作业\\管理员用户信息.txt"),"前台");
                                    break;
                            }
                            break;
                        case 3:
                            a0.display();
                            break;
                        case 4:
                            a0.deleteMessage(id);
                            break;
                        case 5:
                            boolean flag2 = false;
                            System.out.println("请输入查询方式：1.id查询 2.用户名查询 3.查询所有用户信息");
                            int search = sc.nextInt();
                            switch (search){
                                case 1:
                                    String get1 = sc.nextLine();
                                    System.out.println("请输入id");
                                    String idSearch = sc.nextLine();
                                    flag2 = a0.idIterate("D:\\java实训大作业\\管理员用户信息.txt",idSearch);
                                    if(flag2){
                                        break;
                                    }
                                    flag2 = a0.idIterate("D:\\java实训大作业\\经理用户信息.txt",idSearch);
                                    if(flag2){
                                        break;
                                    }
                                    flag2 = a0.idIterate("D:\\java实训大作业\\前台用户信息.txt",idSearch);
                                    if(flag2){
                                        break;
                                    }
                                    System.out.println("没有此id的用户");
                                    break;
                                case 2:
                                    String get2 = sc.nextLine();
                                    System.out.println("请输入用户名");
                                    String nameSearch = sc.nextLine();
                                    flag2 = a0.nameIterate("D:\\java实训大作业\\管理员用户信息.txt",nameSearch);
                                    if(flag2){
                                        break;
                                    }
                                    flag2 = a0.nameIterate("D:\\java实训大作业\\经理用户信息.txt",nameSearch);
                                    if(flag2){
                                        break;
                                    }
                                    flag2 = a0.nameIterate("D:\\java实训大作业\\前台用户信息.txt",nameSearch);
                                    if(flag2){
                                        break;
                                    }
                                    System.out.println("没有此用户名的用户");
                                    break;
                                case 3:
                                    a0.display();
                                    break;
                            }
                            break;
                        case 6:
                            System.out.println("请输入要添加用户的类型：1.管理员 2.经理 3.前台（输入数字）");
                            int flag1 = sc.nextInt();
                            switch (flag1){
                                case 1:
                                    String get1 = sc.nextLine();
                                    if(id.equals("admin")){
                                        System.out.println("请输入要添加管理员的姓名，id，手机号，注册时间，添加时间");
                                        a0.addAdministrator(sc.nextLine(),sc.nextLine(),sc.nextLine(),sc.nextLine(),sc.nextLine());
                                        break;
                                    }else{
                                        System.out.println("你没有权限添加管理员");
                                        break;
                                    }
                                case 2:
                                    String get2 = sc.nextLine();
                                    System.out.println("请输入要添加经理的姓名，id，手机号，注册时间，添加时间");
                                    a0.addManager(sc.nextLine(),sc.nextLine(),sc.nextLine(),sc.nextLine(),sc.nextLine(),a0.getName(id,"D:\\java实训大作业\\管理员用户信息.txt"));
                                    break;
                                case 3:
                                    String get3 = sc.nextLine();
                                    System.out.println("请输入要添加前台的姓名，id，手机号，注册时间，添加时间");
                                    a0.addReception(sc.nextLine(),sc.nextLine(),sc.nextLine(),sc.nextLine(),sc.nextLine(),a0.getName(id,"D:\\java实训大作业\\管理员用户信息.txt"));
                                    break;
                            }
                            break;
                        case 7:
                            a0.changeMessage();
                            break;
                        case 8:
                            flag0 = a0.logout();
                            System.out.println("退出登录成功！");
                            break;
                        default:
                            System.out.println("无效的选择，请重试！");
                    }
                }while (flag0);
                System.out.println("退出当前身份请输入0，继续登录当前身份用户请输入任何数字");
                label = sc.nextInt();
                String get0 = sc.nextLine();
            }else{
                System.out.println("账户名或密码错误");
                System.out.println("退出当前身份请输入0，继续登录当前身份用户请输入任何数字");
                label = sc.nextInt();
                String get0 = sc.nextLine();
            }
        }while(label!=0);
    }

   public void manager() throws IOException {
       int label = 1;
       Scanner scanner = new Scanner(System.in);
       User u0 = new User();
       do {
           boolean flag0 = true;
           System.out.println("请输入你的id");
           String id = sc.nextLine();
           System.out.println("请输入你的密码");
           String password = sc.nextLine();
           String username = u0.getName(id,"D:\\java实训大作业\\经理用户信息.txt");
           Manager m0 = new Manager(username);
           if (m0.judgeIdentity(id, "D:\\java实训大作业\\经理用户信息.txt")) {
               System.out.println("没有此id的经理,请重新输入");
               continue;
           }
           if (m0.login(id, password)) {
               System.out.println("登录成功！");
               if (m0.judgePassword(id, password)) {
                   System.out.println("请输入修改后的密码：");
                   String password1 = sc.nextLine();
                   m0.changePassword(password1, id);
               }
               do {
                   System.out.println("\n===== 经理操作菜单 =====");
                   System.out.println("1. 修改自身密码");
                   System.out.println("2. 重置前台用户密码");
                   System.out.println("3. 影片管理");
                   System.out.println("4. 排片管理");
                   System.out.println("5. 查看销售数据");
                   System.out.println("6. 退出登录");
                   System.out.print("请选择功能: ");
                   int choice;
                   try {
                       choice = Integer.parseInt(scanner.nextLine());
                       switch (choice) {
                           case 1:
                               String password1;
                               System.out.println("请输入修改后的密码");
                               password1 = sc.nextLine();
                               m0.changePassword(password1,id);
                               break;
                           case 2:
                               boolean label1;
                               String resetid;
                               System.out.println("请输入重置时间");
                               String time = sc.nextLine();
                               System.out.println("请输入要重置用户的id");
                               do{
                                   resetid = sc.nextLine();
                                   if(m0.judgeIdentity(resetid,"D:\\java实训大作业\\前台用户信息.txt")){
                                       System.out.println("前台用户中没有此id,请重新输入：");
                                       label1 = true;
                                   }else {
                                       label1 = false;
                                   }
                               }while(label1);
                               m0.resetPassword(resetid);
                               m0.resetPasswordLog(time,m0.getName(resetid,"D:\\java实训大作业\\前台用户信息.txt"),m0.getName(id,"D:\\java实训大作业\\经理用户信息.txt"),"前台");
                               break;
                           case 3:
                               m0.movieManagementMenu();
                               break;
                           case 4:
                               m0.showManagementMenu();
                               break;
                           case 5:
                               m0.viewSalesDataMenu();
                               break;
                           case 6:
                               flag0 = m0.logout();
                               System.out.println("退出登录成功！");
                               break;
                           default:
                               System.out.println("无效的选择，请重试！");
                       }
                   } catch (NumberFormatException e) {
                       System.out.println("请输入有效的数字！");
                   }
               }while(flag0);
               System.out.println("退出当前身份请输入0，继续登录当前身份用户请输入任何数字");
               label = sc.nextInt();
               String get0 = sc.nextLine();
           }else{
               System.out.println("账户名或密码错误");
               System.out.println("退出当前身份请输入0，继续登录当前身份用户请输入任何数字");
               label = sc.nextInt();
               String get0 = sc.nextLine();
           }
       }while(label!=0);
   }

   public void reception() throws IOException {
       int label = 1;
       Scanner scanner = new Scanner(System.in);
       User u0 = new User();
       do {
           boolean flag0 = true;
           System.out.println("请输入你的id");
           String id = sc.nextLine();
           System.out.println("请输入你的密码");
           String password = sc.nextLine();
           String username = u0.getName(id, "D:\\java实训大作业\\前台用户信息.txt");
           Reception r0 = new Reception(username);
           if (r0.judgeIdentity(id, "D:\\java实训大作业\\前台用户信息.txt")) {
               System.out.println("没有此id的前台,请重新输入");
               continue;
           }
           if (r0.login(id, password)) {
               System.out.println("登录成功！");
               if (r0.judgePassword(id, password)) {
                   System.out.println("请输入修改后的密码：");
                   String password1 = sc.nextLine();
                   r0.changePassword(password1, id);
               }
               do {
                   System.out.println("\n===== 前台操作菜单 =====");
                   System.out.println("1. 列出所有正在上映影片");
                   System.out.println("2. 列出所有场次信息");
                   System.out.println("3. 查看指定电影和场次信息");
                   System.out.println("4. 售票");
                   System.out.println("5. 退票");
                   System.out.println("6. 退出登录");
                   System.out.print("请选择功能: ");
                   int choice;
                   choice = Integer.parseInt(scanner.nextLine());
                   switch (choice) {
                       case 1:
                           r0.listAllMovies();
                           break;
                       case 2:
                           r0.listAllShows();
                           break;
                       case 3:
                           r0.listSpecificShowInfo();
                           break;
                       case 4:
                           r0.sellTickets();
                           break;
                       case 5:
                           r0.refundTicket();
                           break;
                       case 6:
                           flag0 = r0.logout();
                           System.out.println("退出登录成功！");
                           break;
                       default:
                           System.out.println("无效的选择，请重试！");
                   }
               } while (flag0);
               System.out.println("退出当前身份请输入0，继续登录当前身份用户请输入任何数字");
               label = sc.nextInt();
               String get0 = sc.nextLine();
           } else {
               System.out.println("账户名或密码错误");
               System.out.println("退出当前身份请输入0，继续登录当前身份用户请输入任何数字");
               label = sc.nextInt();
               String get0 = sc.nextLine();
           }
       } while (label != 0);
   }
}